package com.xgk.boot.module.core.dal.entity.order;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xgk.boot.framework.mybatis.core.dataobject.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单主信息实体类
 * 对应数据库表：orders
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("orders")
public class OrdersDO extends BaseDO {
    /**
     * 主键ID
     */
    @TableId(value = "order_id", type = IdType.AUTO)
    private Integer orderId;

    /**
     * 订单编号
     */
    @TableField("order_code")
    private String orderCode;

    /**
     * 客户参考号
     */
    @TableField("reference_no")
    private String referenceNo;

    /**
     * 运单号
     */
    @TableField("tracking_number")
    private String trackingNumber;

    /**
     * 客户ID
     */
    @TableField("customer_id")
    private Long customerId;

    /**
     * 客户代码
     */
    @TableField("customer_code")
    private String customerCode;

    /**
     * 平台代码
     */
    @TableField("platform")
    private String platform;

    /**
     * 订单类型：0:普通
     */
    @TableField("order_type")
    private Integer orderType;

    /**
     * 创建类型:api,upload,hand
     */
    @TableField("create_type")
    private String createType;

    /**
     * 国家简码
     */
    @TableField("country_code")
    private String countryCode;

    /**
     * 物流产品代码
     */
    @TableField("sm_code")
    private String smCode;

    /**
     * 服务商渠道代码
     */
    @TableField("sp_code")
    private String spCode;

    /**
     * 运费估算
     */
    @TableField("sh shipping_fee_estimate")
    private BigDecimal shippingFeeEstimate;

    /**
     * 币种Code
     */
    @TableField("currency_code")
    private String currencyCode;

    /**
     * 物品内容描述（内装何物）下单时填写
     */
    @TableField("parcel_contents")
    private String parcelContents;

    /**
     * 内件数量
     */
    @TableField("parcel_quantity")
    private Integer parcelQuantity;

    /**
     * 订单重量
     */
    @TableField("o_weight")
    private Double oWeight;

    /**
     * 订单状态
     * 0:已取消;1:草稿;2:已提交;3:已预报;99:已作废
     */
    @TableField("order_status")
    private Integer orderStatus;

    /**
     * 订单子状态
     * 0-无异常,1-预报异常
     */
    @TableField("order_sub_status")
    private Integer orderSubStatus;

    /**
     * 拦截状态
     * 0:无;1:申请拦截;2:拦截中;3:拦截失败;4:已拦截
     */
    @TableField("intercept_status")
    private Integer interceptStatus;

    /**
     * 等待状态
     * 0:无;1:物流处理
     */
    @TableField("order_waiting_status")
    private Integer orderWaitingStatus;

    /**
     * 计费状态
     * 0:计费完成 1:待计费 2: 计费失败
     */
    @TableField("order_charge_status")
    private Integer orderChargeStatus;

    /**
     * 是否为手工上传跟踪号
     * 0:否 1:是
     */
    @TableField("is_upload_express")
    private Integer isUploadExpress;

    /**
     * 需要或允许,重新预报
     */
    @TableField("is_anew_express")
    private Integer isAnewExpress;

    /**
     * 同步服务商标志
     * 0：未同步1：已同步 2：同步失败
     */
    @TableField("sync_service_status")
    private Integer syncServiceStatus;

    /**
     * 记录同步次数
     */
    @TableField("sync_count")
    private Integer syncCount;

    /**
     * 标签打印次数
     */
    @TableField("print_quantity")
    private Integer printQuantity;

    /**
     * 取消时间
     */
    @TableField("cancel_time")
    private Date cancelTime;

    /**
     * 物流时间
     */
    @TableField("logistics_time")
    private Date logisticsTime;

    /**
     * 验证时间
     */
    @TableField("verify_time")
    private Date verifyTime;


    /**
     * 付款时间
     */
    @TableField("order_paydate")
    private Date orderPaydate;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 操作说明
     */
    @TableField("operator_note")
    private String operatorNote;

    /**
     * 物流异常
     */
    @TableField("logistics_err")
    private String logisticsErr;

    /**
     * 是否为ODA件
     * 1:是 0:否
     */
    @TableField("is_oda")
    private Integer isOda;

    /**
     * ODA类型
     * 0:oda 1:偏远 2:超偏远
     */
    @TableField("oda_type")
    private Integer odaType;

    /**
     * 是否购买签名服务
     * 0:否 1:普通签名 2:成人签名
     */
    @TableField("is_signature")
    private Integer isSignature;

    /**
     * 是否购买保险服务
     * 1:是 0:否
     */
    @TableField("is_insurance")
    private Integer isInsurance;

    /**
     * 投保金额
     */
    @TableField("insurance_value")
    private BigDecimal insuranceValue;

    /**
     * 物品申报价值,下单时填写,非SKU加总
     */
    @TableField("parcel_declared_value")
    private BigDecimal parcelDeclaredValue;

    /**
     * 是否为住宅
     * 1:是，0:否
     */
    @TableField("is_residential")
    private Integer isResidential;

    /**
     * 地址验证标识
     * 0:未检测 1:已检测 2:失败
     */
    @TableField("validate_address_sign")
    private Integer validateAddressSign;

    /**
     * 计费类型
     * 0:标准 1:免运费
     */
    @TableField("order_charge_type")
    private Integer orderChargeType;

    /**
     * 是否一票多件
     * 0:不是 1:是
     */
    @TableField("is_more_box")
    private Integer isMoreBox;

    /**
     * PO代码
     */
    @TableField("po_code")
    private String poCode;

    /**
     * VAT代码
     */
    @TableField("vat_code")
    private String vatCode;

    /**
     * 是否为FBA地址
     * 0否 1是
     */
    @TableField("is_fba_address")
    private Integer isFbaAddress;

    /**
     * 关联客户地址ID
     */
    @TableField("ca_id")
    private Long caId;

    /**
     * 订单同步过程中的异常信息
     */
    @TableField("sync_info")
    private String syncInfo;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 出账状态
     * 0-未出账 1-已匹配 2-部分匹配 3-部分出账 4-已出账
     */
    @TableField("bill_status")
    private Integer billStatus;

    /**
     * 标签回调地址
     */
    @TableField("label_callback_url")
    private String labelCallbackUrl;

    /**
     * 地址类型
     * 0-商业地址 1-住宅地址
     */
    @TableField("order_address_type")
    private Integer orderAddressType;

    /**
     * 亚马逊地址代码
     */
    @TableField("warehouse_code")
    private String warehouseCode;

    /**
     * 服务商类型
     */
    @TableField("sp_type")
    private Integer spType;

    /**
     * 同步回调状态
     */
    @TableField("sync_callback_status")
    private Integer syncCallbackStatus;

    /**
     * FBA地址代码
     */
    @TableField("fba_code")
    private String fbaCode;


    /**
     * 渠道方式历史记录
     */
    @TableField("smo_id")
    private Long smoId;

    /**
     * 标签打印状态
     */
    @TableField("label_print")
    private Integer labelPrint;

    /**
     * 同步服务商次数
     */
    @TableField("sync_service_count")
    private Integer syncServiceCount;

    /**
     * 是否已打印标签
     */
    @TableField("print_label")
    private Integer printLabel;

    /**
     * 产品SKU
     */
    @TableField("product_sku")
    private String productSku;

    /**
     * 计量单位类型
     * 1.LBS/Inches，2.KG/CM
     */
    @TableField("weight_unit_type")
    private Integer weightUnitType;

    /**
     * 是否为退货订单
     * 0不是，1是退货订单
     */
    @TableField("is_return")
    private Integer isReturn;

    /**
     * 支付状态
     * 0未支付 1支付中 2已支付
     */
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * 危险品服务
     * 0不使用 1使用
     */
    @TableField("dangerous_service")
    private Integer dangerousService;

    /**
     * 是否高度危险品种
     * 0不是 1是
     */
    @TableField("dangerous_cargo")
    private Integer dangerousCargo;

    /**
     * 是否可以接近触摸
     * 0不可以 1可以
     */
    @TableField("dangerous_accessibility")
    private Integer dangerousAccessibility;

    /**
     * 危险品类型
     * 0无 1危险物质 2电池 3矿
     */
    @TableField("dangerous_options")
    private Integer dangerousOptions;

    /**
     * 面单类型
     * PDF ZPL
     */
    @TableField("label_format")
    private String labelFormat;

}
